#include<iostream>
#include<functional>
using namespace std;

int add(int x, int y)
{
	return x + y;
}
struct sub
{
	int operator()(int x, int y)
	{
		return x - y;
	}
};



int main()
{
	function<int(int, int)> _add = add;
	function<int(int, int)> _sub = sub();
	function<int(int, int)> _mul = [](int x, int y) { return x * y; };
	cout << _add(1, 2) << endl;
	cout << _sub(3, 2) << endl;
	return 0;
}